@@ -384,3 +384,26 @@ def maintenance_tracking_info_callback(request):  | 
            ||
| 384 | 384 | 
                maintenance_tracking_info_update(maintenance, type_, tracking_info)  | 
            
| 385 | 385 | 
                 | 
            
| 386 | 386 | 
                return response()  | 
            
| 387 | 
                +  | 
            |
| 388 | 
                +  | 
            |
| 389 | 
                +@logit  | 
            |
| 390 | 
                +def maintenance_close(request):  | 
            |
| 391 | 
                +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            |
| 392 | 
                +    maintenance_id = request.POST.get('maintenance_id', '')
               | 
            |
| 393 | 
                +    admin_id = request.POST.get('admin_id', '')
               | 
            |
| 394 | 
                +  | 
            |
| 395 | 
                + try:  | 
            |
| 396 | 
                + maintenance = MaintenaceInfo.objects.get(id=maintenance_id, status=True)  | 
            |
| 397 | 
                + except MaintenaceInfo.DoesNotExist:  | 
            |
| 398 | 
                + return response(MaintenanceStatusCode.MAINTENACE_NOT_FOUND)  | 
            |
| 399 | 
                +  | 
            |
| 400 | 
                + if not is_admin(brand_id, admin_id):  | 
            |
| 401 | 
                + return response(MaintenanceStatusCode.MAINTENACE_NOT_FOUND)  | 
            |
| 402 | 
                +  | 
            |
| 403 | 
                + maintenance.maintenance_status = MaintenaceInfo.TRACKING_BACK_SIGNED  | 
            |
| 404 | 
                + maintenance_status_at = maintenance.maintenance_status_at  | 
            |
| 405 | 
                + maintenance_status_at[MaintenaceInfo.TRACKING_BACK_SIGNED] = tc.utc_datetime()  | 
            |
| 406 | 
                + maintenance.maintenance_status_at = maintenance_status_at  | 
            |
| 407 | 
                + maintenance.save()  | 
            |
| 408 | 
                +  | 
            |
| 409 | 
                + return response()  | 
            
                @@ -278,6 +278,7 @@ urlpatterns += [  | 
            ||
| 278 | 278 | 
                 | 
            
| 279 | 279 | 
                url(r'^admin/maintenance/update$', maintenance_views.maintenance_update, name='maintenance_update'),  | 
            
| 280 | 280 | 
                url(r'^admin/maintenance/list$', maintenance_views.maintenance_list, name='maintenance_list'),  | 
            
| 281 | 
                + url(r'^admin/maintenance/close$', maintenance_views.maintenance_close, name='maintenance_close'),  | 
            |
| 281 | 282 | 
                 | 
            
| 282 | 283 | 
                url(r'^admin/maintenance/tracking/info$', maintenance_views.maintenance_tracking_info, name='maintenance_tracking_info'),  | 
            
| 283 | 284 | 
                url(r'^maintenance/tracking/info/callback$', maintenance_views.maintenance_tracking_info_callback, name='maintenance_tracking_info_callback'),  |